#include "recboxitem.h"
#include "ui_recboxitem.h"
#include<QDebug>
#include<QPropertyAnimation>

/////////////////////////////////////////////////////////////////
//在线音乐右侧界面(推荐页面)中的显示专辑的翻滚框里的一个元素//////////////
////////////////////////////////////////////////////////////////

RecBoxItem::RecBoxItem(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::RecBoxItem)
{
    ui->setupUi(this);

    // 注意：不要忘记事件拦截器安装，否则时间拦截不到，因此需要在构造函数中添加：
    // 拦截事件处理器时，⼀定要安装事件拦截器
    ui->musicImageBox->installEventFilter(this);
}

RecBoxItem::~RecBoxItem()
{
    delete ui;
}

//设置推荐图片
void RecBoxItem::setImage(const QString &imagePath)
{
    QString imageStyle="border-image: url("+imagePath+");";
    ui->recMusicImage->setStyleSheet(imageStyle);
}

//设置推荐文本
void RecBoxItem::setText(const QString &text)
{
    ui->recBoxItemText->setText(text);
}

//重写事件拦截函数-->鼠标进入图片事件和鼠标离开图片事件(实现图标上移和还原)
bool RecBoxItem::eventFilter(QObject *watched, QEvent *event)
{
    (void)watched;
    (void)event;
    if(watched==ui->musicImageBox)
    {
        int ImgWidth=ui->musicImageBox->width();
        int ImgHeight=ui->musicImageBox->height();
        if(event->type()==QEvent::Enter)
        {
            //qDebug()<<"鼠标进入";测试
            QPropertyAnimation* animation=new QPropertyAnimation(ui->musicImageBox,"geometry");
            animation->setDuration(1000);
            animation->setStartValue(QRect(9,9,ImgWidth,ImgHeight));
            animation->setEndValue(QRect(9,0,ImgWidth,ImgHeight));
            animation->start();

            // 注意：动画结束的时候会触发finished信号，拦截到该信号，销毁animation
            connect(animation,&QPropertyAnimation::finished,this,[=](){
                delete animation;
            });
            return true;
        }
        else if(event->type()==QEvent::Leave)
        {
            //qDebug()<<"鼠标离开";测试
            QPropertyAnimation* animation=new QPropertyAnimation(ui->musicImageBox,"geometry");
            animation->setDuration(1000);
            animation->setStartValue(QRect(9,0,ImgWidth,ImgHeight));
            animation->setEndValue(QRect(9,9,ImgWidth,ImgHeight));
            animation->start();
            connect(animation,&QPropertyAnimation::finished,this,[=](){
                delete animation;
            });
            return true;
        }
    }
    return QObject::eventFilter(watched,event);
}
